Preventing unauthorized copying and/or use of software is an ongoing challenge. Various techniques have been developed to attempt to thwart unauthorized copying and/or use of software, including hardware keys, physically secure platforms and hardware, which are intended to prevent access to the software without authorization manifested in the form of a physical device, such as a key. Software authorizations have also been employed, including secure key codes, encryption and authentication protocols, such as user logins.
When a software platform is connected to a network, including public networks, such as a publically switched telephone network (PSTN) or internet, software can be downloaded to the platform for execution. It is often challenging to establish security for installation of software over such networks, or prevent execution of such software by unauthorized parties. Another concern with network distributed software is the possibility of unauthorized parties reverse engineering the software to determine software functionality. For example, a competitor of an entity that produces software may wish to reverse engineer the entity's software, to be able to develop competing products that can operate on the entity's platforms. While some safeguards are available to prevent unauthorized installation and/or copying, such as those mentioned above, challenges remain to prevent unauthorized software downloads, copying or execution. For example, some software may run in an unprotected simulation mode, which may permit unsecured access to the software.